﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace UI.Desktop
{
    public partial class frmAltaPaciente : Form
    {
        bool incorrecto = false;
        Business.Entities.Paciente enCliPub = new Business.Entities.Paciente();
        private DataSet numProvincia;
        public bool cambios = false;

        public frmAltaPaciente()
        {
            InitializeComponent();
            Business.Entities.Paciente provi = new Business.Entities.Paciente();
            DataSet dsProv = new DataSet();
            dsProv = provi.ObtenerListaProvincias();



            numProvincia = new DataSet();
            numProvincia = dsProv;

  }

        #region ERROR PROVIDER

        private void txtDNI_Leave(object sender, EventArgs e)
        {
            if (!Regex.Match(txtDNI.Text, @"^((\d{8})|(\d{8}))$").Success)
            {
                errorProvider1.SetError(txtDNI, "DNI incorrecto, formato correcto: 00000000");
                incorrecto = true;
            }
            else { errorProvider1.SetError(txtDNI, ""); incorrecto = false; }
        }

        private void txtNombre_Leave(object sender, EventArgs e)
        {
            if (!Regex.Match(txtNombre.Text, @"^[A-Za-zñÑáéíóúÁÉÍÓÚçÇ\s]{3,30}$").Success)
            {
                errorProvider1.SetError(txtNombre, "Nombre incorrecto");
                incorrecto = true;
            }
            else { errorProvider1.SetError(txtNombre, ""); incorrecto = false; }
        }

        private void txtApellidos_Leave(object sender, EventArgs e)
        {
            if (!Regex.Match(txtApellidos.Text, @"^[A-Za-zñÑáéíóúÁÉÍÓÚçÇ\s]{3,40}$").Success)
            {
                errorProvider1.SetError(txtApellidos, "Apellidos incorrectos, caracteres invalidos");
                incorrecto = true;
            }
            else { errorProvider1.SetError(txtApellidos, ""); incorrecto = false; }
        }

        private void txtTelefono_Leave(object sender, EventArgs e)
        {
            if (!Regex.Match(txtTelefono.Text, @"^[0-9]{9}$").Success)
            {
                errorProvider1.SetError(txtTelefono, "Telefono incorrecto, caracteres invalidos");
                incorrecto = true;
            }
            else { errorProvider1.SetError(txtTelefono, ""); incorrecto = false; }
        }

        private void txtEmail_Leave(object sender, EventArgs e)
        {
            if (txtEmail.Text == "") errorProvider1.SetError(txtEmail, "");
            else if (!Regex.Match(txtEmail.Text, @"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$").Success)
            {
                errorProvider1.SetError(txtEmail, "Email incorrectos, caracteres invalidos");
                incorrecto = true;
            }
            else { errorProvider1.SetError(txtEmail, ""); incorrecto = false; }
        }

        private void txtDireccion_Leave(object sender, EventArgs e)
        {
            if (!Regex.Match(txtDireccion.Text, @"^[A-Za-zñÑáéíóúÁÉÍÓÚçÇ\s]{3,50}$").Success)
            {
                errorProvider1.SetError(txtDireccion, "Dirección incorrecta, caracteres invalidos");
                incorrecto = true;
            }
            else { errorProvider1.SetError(txtDireccion, ""); incorrecto = false; }
        }

        #endregion

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }


        public frmPrincipal frmPrincipal { get; set; }


        private void btnGuardarCliente_Click(object sender, EventArgs e)
        {
            if (txtDNI.Text == "" || txtNombre.Text == "" || txtApellidos.Text == "" || txtTelefono.Text == "" ||
                 txtEmail.Text == "" || txtDireccion.Text == "" || (cbProvincia.SelectedIndex == 1) ||
                (rdbMasculino.Checked == false && rdbFemenino.Checked == false)) 
            {

                MessageBox.Show("Campos invalidos, no puede haber ninguno vacio", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else if (incorrecto == true)
            {
                MessageBox.Show("Campos invalidos, reviselos", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Error);

            }
            else
            {
                Business.Entities.Paciente enPaciente = new Business.Entities.Paciente();

                enPaciente.DNI = txtDNI.Text; enPaciente.Nombre = txtNombre.Text; enPaciente.Apellidos = txtApellidos.Text; enPaciente.Telefono = Int32.Parse(txtTelefono.Text);
                enPaciente.Email = txtEmail.Text; enPaciente.Direccion = txtDireccion.Text;
                enPaciente.Provincia = cbProvincia.Text.ToString();// enPaciente.Departamento = "Santa Fe";
                enPaciente.Ciudad = cbCiudad.Text.ToString();
                enPaciente.ObraSocial =cbObraSocial.Text.ToString();

                

                Business.Entities.Paciente enCliPub = new Business.Entities.Paciente();
                /////////////////////////////VERIFICA Y ADD/////
                cambios = true;
                enCliPub.DNI = txtDNI.Text.ToString();
                enCliPub.Nombre = txtNombre.Text.ToString();
                enCliPub.Apellidos = txtApellidos.Text.ToString();
                enCliPub.Telefono = Int32.Parse(txtTelefono.Text.ToString());
                enCliPub.Email = txtEmail.Text.ToString();
                enCliPub.Direccion = txtDireccion.Text.ToString();
                /////////////////////////////////////////////



                if (rdbMasculino.Checked == true) { enPaciente.Sexo = "M"; }
                else if (rdbFemenino.Checked == true) { enPaciente.Sexo = "F"; }
                
                if (chkPaciente.Checked == true) { enPaciente.Habilitado = true; }
                else { enPaciente.Habilitado = false;}

                if (!enCliPub.ExistePacienteEN(txtDNI.Text))
                {
                    if (btnGuardarCliente.Text.ToString() == "Guardar")
                    {
                        enPaciente.AnyadirPaciente();
                        MessageBox.Show("El usuario fue registrado con exito", "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }





                    else
                        enPaciente.EditarPaciente();

                    this.Close();
                }
                else
                {
                    MessageBox.Show("El DNI introducido ya existe");
                }

            }
        }


        //
        ////COMBO BOX PROVINCIA
        //
        private void cbProvincia_Click(object sender, EventArgs e)
        {
            Business.Entities.Paciente provincia = new Business.Entities.Paciente();
            DataSet dsProv = new DataSet();
            dsProv = provincia.ObtenerListaProvincias();
            ObtenerProvincias(dsProv);
        }

        private void ObtenerProvincias(DataSet dsProv)
        {
            cbProvincia.Text = "Seleccione Provincia";
            cbProvincia.DataSource = dsProv.Tables["provincia"];
            cbProvincia.DisplayMember = dsProv.Tables["provincia"].Columns[1].Caption.ToString(); // como dsProv lleva el id_prov y el nombre ponemos 1 que es la columna del nombre
        }

        private void cbProvincia_TextChanged(object sender, EventArgs e)
        {
            Business.Entities.Paciente enCiu = new Business.Entities.Paciente();
            DataSet dsCiu = new DataSet();
            try
            {
                if (cbProvincia.SelectedIndex > 0)
                {

                    //MessageBox.Show("iusdhg");
                    string prov = cbProvincia.Text.ToString();
                    bool parar = false;
                    // MessageBox.Show(numProvincia.Tables["Provincia"].Rows.Count.ToString());
                    for (int i = 0; i < 6000 && parar != true; i++)
                    {
                        //MessageBox.Show(numProvincia.Tables["Provincia"].Rows[i][1].ToString());
                        if (numProvincia.Tables["provincia"].Rows[i][1].ToString() == prov)
                        {
                            string numprov = numProvincia.Tables["provincia"].Rows[i][0].ToString();// en la posicion 0 esta el id de la provincia
                            parar = true;
                            dsCiu = enCiu.ObtenerListaCiudades(numprov);

                        }
                    }
                    ObtenerCiudades(dsCiu);
                }
                else { cbCiudad.SelectedIndex = -1; cbCiudad.DataSource = null; }
            }
            catch (Exception ex)
            {
                // MessageBox.Show("Seleccione primero una provincia", "Cuidado", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }



        //
        ////COMBO BOX LOCALIDAD
        //

        private void ObtenerCiudades(DataSet dsCiu)
        {
            cbCiudad.Text = "Seleccione Ciudad";
            cbCiudad.DataSource = dsCiu.Tables["ciudad"];
            cbCiudad.DisplayMember = dsCiu.Tables["ciudad"].Columns[1].Caption.ToString();

        }

        private void cbCiudad_Click(object sender, EventArgs e)
        {
            Business.Entities.Paciente enCiu = new Business.Entities.Paciente(); //Preguntar que hace aca.
            DataSet dsCiu = new DataSet(); //Instanciamos nuestro dataset
            try
            {
                string prov = cbProvincia.Text.ToString();
                bool parar = false;
                // MessageBox.Show(numProvincia.Tables["Provincia"].Rows.Count.ToString());
                for (int i = 0; i < 6000 && parar != true; i++)
                {
                    //MessageBox.Show(numProvincia.Tables["Provincia"].Rows[i][1].ToString());
                    if (numProvincia.Tables["provincia"].Rows[i][1].ToString() == prov)
                    {
                        string numprov = numProvincia.Tables["provincia"].Rows[i][0].ToString();// en la posicion 0 esta el id de la provincia
                        parar = true;
                        dsCiu = enCiu.ObtenerListaCiudades(numprov);

                    }
                }
                ObtenerCiudades(dsCiu);
            }
            catch (Exception ex)
            {
                //MessageBox.Show("Seleccione primero una provincia", "Cuidado", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void frmAltaPaciente_Load(object sender, EventArgs e)
        {

        }

        private void cbCiudad_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void cbProvincia_SelectedIndexChanged(object sender, EventArgs e)
        {

        }


     



















        //
        ////BOTON FOTO
        //
        //private void btnFoto_Click(object sender, EventArgs e)
        //{
        //    OpenFileDialog OFich = new OpenFileDialog();
        //    OFich.Filter = "jpg (*.jpg)|*.jpg";
        //    pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
        //    if (OFich.ShowDialog() == DialogResult.OK)
        //        pictureBox1.Image = System.Drawing.Image.FromFile(OFich.FileName);
        //}




        private void cbObraSocial_Click(object sender, EventArgs e)
        {


            Business.Entities.Paciente ObraSocial = new Business.Entities.Paciente();
            DataSet dsObraSocial = new DataSet();
            dsObraSocial = ObraSocial.ObtenerListaObraSocial();
            ObtenerObraSocial(dsObraSocial);
        }

        private void ObtenerObraSocial(DataSet dsObraSocial)
        {
            cbObraSocial.Text = "Seleccione su Obra social";
            cbObraSocial.DataSource = dsObraSocial.Tables["ObraSocial"];
            cbObraSocial.DisplayMember = dsObraSocial.Tables["ObraSocial"].Columns[1].Caption.ToString(); // como dsProv lleva el id_prov y el nombre ponemos 1 que es la columna del nombre
        }

        private void cbObraSocial_TextChanged(object sender, EventArgs e)
        {


            Business.Entities.Paciente enObra = new Business.Entities.Paciente();
            DataSet dsObra = new DataSet();
            try
            {
                if (cbObraSocial.SelectedIndex > 0)
                {

                    //MessageBox.Show("iusdhg");
                    string Obra = cbObraSocial.Text.ToString();
                    bool parar = false;
                    //MessageBox.Show(enObra.Tables["ObraSocial"].Rows.Count.ToString());

                    for (int i = 0; i < 6000 && parar != true; i++)
                    {
                        MessageBox.Show(dsObra.Tables["ObraSocial"].Rows[i][1].ToString());
                    }



                }

            }

            catch (Exception ex)
            {
                //MessageBox.Show("Seleccione primero una provincia", "Cuidado", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

        }

        private void txtNombre_TextChanged(object sender, EventArgs e)
        {

        }

        private void txtDNI_TextChanged(object sender, EventArgs e)
        {

        }

       



       

    }

}


            

        

     




      



    
    


       

        




    

